package com.qianfeng.libra.cowshop.app.utils;

/**
 * Created by Libra丶ZW on 2015/2/6 0006.
 */

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.widget.ImageView;

/**
 * 通用的图片下载异步任务，通过构造方法设置，需要接受图片的ImageView
 */
public class ImageLoader extends AsyncTask<String, Integer, byte[]> {
    /**
     * 设置成员变量用于引用外部的ImageView
     */
    private ImageView imageView;
    private String imgUrl;

    public ImageLoader(ImageView imageView) {
        this.imageView = imageView;
    }

    @Override
    protected byte[] doInBackground(String... params) {
        byte[] ret = new byte[0];
        imgUrl = params[0];
        if (params != null && params.length > 0) {
            // TODO 下载 imgUrl的图片
            ret = HttpTools.get(imgUrl);
        }
        return ret;
    }

    @Override
    protected void onPostExecute(byte[] bytes) {
        if (bytes != null) {

            // TODO 更新文件缓存
            FileCache fileCache = FileCache.getInstance();
            fileCache.putContent(imgUrl, bytes);

            Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
            //更新内存缓存
            ImageCache imageCache = ImageCache.getInstance();
            //向内存中设置图片缓存
            imageCache.putImage(imgUrl, bitmap);

            if (imageView != null) {
                // TODO 检查ImageView的Tag
                Object tag = imageView.getTag();
                if (tag != null) {
                    //检查tag和下载地址是否相等
                    if (tag instanceof String) {
                        String sTag = (String) tag;
                        //如果当前的下载地址和ImageView中的Tag是一致的，
                        //那么就任务当前异步任务下载的图片就是需要在这个ImageView中显示
                        if (sTag.equals(imgUrl)) {
                            imageView.setImageBitmap(bitmap);
                        }
                    }
                } else {
                    imageView.setImageBitmap(bitmap);
                }
            }

        }
    }
}
